這個問題已經在這裡有了答案: Express JS-無法重定向 (4個答案) 7年前關閉。 我在下面的中間件中使用passportjs。假設檢查用戶在請求某些東西時是否登錄。如果未登錄,則應將其重定向到登錄頁面。 我的請求路線如下: app.put('/ fantasyteams /:fantasyTeamId',auth.requiresLogin,fantasyteams.update); 當用戶嘗試更新網站中名為Fantasy Team的資源時,將調用此路由 auth.requiresLogin是一種中間件,如下所示: Exports.requiresLogin = function(req,res,next){ 如果(req.isAuthenticated()){ 返回next() } 返回res.redirect(“ / signin”); }; 登錄我的用戶後,我通過刪除會話cookie來模擬會話到期。之後,我通過網站提出了“ / fantasyteams / 123”請求,以更新幻想團隊編號123。 fantasyteams.update僅僅是mongodb / mongoose保存操作: exports.update = function(req,res){ var fantasyteam = req.fantasyteam; fantasyteam = _.extend(fantasyteam,req.body); fantasyteam.save(function(err){ res.jsonp(fantasyteam); }); }; 正如預期的那樣,上述路由處理程序(app.put ...)捕獲了該請求,將其傳遞給auth.requiresLogin中間件以檢查用戶是否登錄。因此事實證明,由於我刪除了該用戶,因此未登錄他的會話Cookie。 res.redirect如預期那樣被調用。但是,該網站不會重定向到登錄頁面。我在node.js命令日誌中看到了這一點: PUT /登錄404 328ms 我做錯什麼了?
2021-02-25 08:20:17
看來問題在於您沒有用於PUT / signin的路由處理程序。原始請求是放置請求,因此當重定向時,它仍然是瀏覽器相同的“放置”請求的一部分。只需使用app.all('/ signin')添加一個放置/發布/處理程序 3 | 不是您要找的答案?瀏覽標記為node.js會話cookie的其他問題,表達護照或護照,或者提出您自己的問題。